
// pages/orderPay/orderPay.js
import { request } from "../../utils/request"; // 新增导入
import { wechatPay } from "../../utils/wxPay.js";

Page({
  /**
   * 页面的初始数据
   */
  data: {
    selectedPayment: "wechat", //默认微信支付
    countdown: "15:00", //倒计时时间
    isLoading: false, //支付加载状态
    orderId: "", // 接收订单ID（新增）
    orderNo: "" , // 接收订单号（新增）
    amount:0
  },

  // 点击整个选项区域或单选图标都触发
  selectPayment(e) {
    const type = e.currentTarget.dataset.type;
    this.setData({
      selectedPayment: type,
    });
  },

  // 单独点击 radio-icon 时也触发（可选，增强体验）
  togglePayment(e) {
    const type = e.currentTarget.dataset.type;
    this.setData({
      selectedPayment: type,
    });
  },

  // 获取微信登录临时凭证code  测试用的
  getCode(e) {
    // 注意：在微信小程序中，bind:tap事件对象没有stopPropagation方法
    // 如果需要阻止事件冒泡，应该在wxml中使用catch:tap而不是bind:tap

    wx.login({
      success: (res) => {
        if (res.code) {
          console.log("获取临时登录凭证成功，code:", res.code);
          // 这里可以将code发送到后端服务器
          wx.showToast({
            title: "获取code成功",
            icon: "success",
            duration: 2000,
          });

          // 可以在这里调用后端接口，将code发送给服务器
          // this.sendCodeToServer(res.code);
        } else {
          console.log("登录失败！" + res.errMsg);
          wx.showToast({
            title: "获取code失败",
            icon: "error",
            duration: 2000,
          });
        }
      },
      fail: (err) => {
        console.error("wx.login调用失败:", err);
        wx.showToast({
          title: "登录调用失败",
          icon: "error",
          duration: 2000,
        });
      },
    });
  },

  toPay() {
    const { orderId,amount } = this.data; // 获取订单ID
    if (!orderId) { // 校验订单ID存在
      wx.showToast({ title: "订单ID不存在", icon: "error" });
      return;
    }
    const payload = {
      amount: 1, // 使用接收的实际金额（转换为数字）
      id: orderId, // 传递订单ID给支付工具（新增）
    };

//     通过 call 绑定 Page 上下文，确保内部使用 this 正常
//  绑定上下文并执行支付，支付成功后同步状态
    wechatPay.call(this, payload, (isSuccess,orderId) => { // 新增回调函数
      if (isSuccess && orderId) {
        console.log("订单有效id",orderId)
        // // 1. 支付成功：调用后端接口更新状态
        this.updateOrderStatus(orderId);
      } else {
        // 2. 支付失败：不修改状态（保持未支付）
        wx.showToast({ title: '支付失败', icon: 'none'});
        // 支付失败：直接跳转订单列表（状态保持未支付）
      }
    });
  },
 // 支付成功后更新前后端订单状态（新增方法）
 updateOrderStatus(orderId) {
  console.log("更新状态的订单ID：", orderId, "类型：", typeof orderId); // 打印ID和类型
  // 调用后端接口更新状态为“已支付、待执行”
  request(
    "/greenold-order/order",
    {
      id: orderId,
      payStatus: "1", // 已支付
      orderStatus: "1" // 待执行
    },
    "PUT"
  ).then(res => {
    if (res.code === 200) {
      // 同步前端本地存储的订单状态
      this.syncLocalOrderStatus(orderId);
      wx.showToast({ title: '支付成功', icon: 'success' });
      // 跳转订单列表页
      wx.navigateTo({
        url: '/pages/order-list/order-list',
      })
    } else {
      console.error("后端状态更新失败：", res.msg);
      wx.showToast({ title: '状态更新失败', icon: 'none' });
    }
  }).catch(err => {
    console.error("更新订单状态失败：", err);
    wx.showToast({ title: '网络异常', icon: 'none' });
  });
},

// 同步前端本地存储的订单状态（新增方法）
syncLocalOrderStatus(orderId) {
  const app = getApp();
  const orders = app.globalData.orders || [];
  // 找到对应订单并更新状态
  const updatedOrders = orders.map(order => {
    if (order.id === orderId) {
      return {
        ...order,
        status: "待执行", // 状态文本更新
        statusClass: "processing", // 状态样式更新
        payStatus: "1", // 支付状态更新
        showPay: false, // 隐藏支付按钮
        showCancel: false // 隐藏取消按钮
      };
    }
    return order;
  });
  // 更新全局和本地存储
  app.globalData.orders = updatedOrders;
  wx.setStorageSync('orders', updatedOrders);
},




  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {

    this.setData({
      // orderId: options.orderId || "",
      orderNo: options.orderNo || "",
      amount: options.amount || 0, // 接收金额并存储
    });
    const orderNoFromData = this.data.orderNo;
    request("/greenold-order/order/QueryOrderId",{bizOrderNo:orderNoFromData},"GET")
      .then((res)=>{
        if(res.code==200){
          console.log("后端传过来的orderId",res.msg)
           this.setData({
          orderId: res.msg // 将后端返回的订单号赋值给 data 中的 orderNo
        });
        }
      })
    console.log("支付页接收的订单ID：", this.data.orderId); // 确认ID正确
    //设置计时器
    let timeLeft = 15 * 60; //15分钟
    this.countdownInterval = setInterval(() => {
      if (timeLeft <= 0) {
        clearInterval(this.countdownInterval);
        this.setData({ countdown: "00:00" });
        return;
      }
      const min = Math.floor(timeLeft / 60);
      const sec = timeLeft % 60;
      this.setData({ countdown: `${min}:${sec < 10 ? "0" + sec : sec}` });
      timeLeft--;
    }, 1000);
  },
   /**
   * 生命周期函数--监听页面卸载（新增：清除定时器）
   */
  onUnload() {
    if (this.countdownInterval) {
      clearInterval(this.countdownInterval);
    }
  }
});
